package main

import (
	"fmt"

	_ "github.com/astaxie/beego/context"

	"github.com/astaxie/beego"
)

type LoginForm struct {
	Username string `form:"username"`
	Password string `form:"password"`
}

type RequestController struct {
	beego.Controller
}

func (c *RequestController) Header() {
	// 请求控制器和动作
	fmt.Println(c.GetControllerAndAction())

	// 请求头信息
	ctx := c.Ctx
	input := ctx.Input
	fmt.Println(input.Method(), input.Protocol(), input.URI(), input.URL())
	// // 原生
	// fmt.Println(ctx.Request.Method, ctx.Request.Proto, ctx.Request.RequestURI, ctx.Request.URL)

	// // 请求头信息
	// fmt.Println(input.Header("User-Agent"))
	// // 原生
	// fmt.Println(ctx.Request.Header.Get("User-Agent"))

	// // url数据  ParseForm + Form
	// fmt.Println(input.Query("id"))
	// // url参数扫描到变量
	// var id int
	// input.Bind(&id, "id")
	// fmt.Println(id)

	// // Controller查看参数变量
	// // GetInt GetString GetStrings GetBool
	// // fmt.Println(c.GetInt("id"))

	// 参数解析到结构体
	var form LoginForm
	fmt.Println(c.ParseForm(&form), form)

	fmt.Println(string(input.CopyBody(1024 * 1024)))
	fmt.Println(string(input.RequestBody))

	c.Ctx.Output.Body([]byte("header"))
}

/*
用户提交数据
Context => c.Ctx

	请求数据	c.Ctx
					c.Ctx.Request == http.Request
					http.Request
						URL
							ParseForm + Form
							FormValue
						Body
							x-www-form-urlencoded
								ParseForm + Form
								ParseForm + PoseForm
								FormValue
								PostFormValue
						其他
							Body
					c.Ctx.Input == Request.Form
		Controller
			Get*
*/

func main() {
	beego.AutoRouter(&RequestController{})
	beego.Run()

}
